\section{std::chrono}
时间相关转换示意\figref{fig:chrono_transform}:
\begin{figure}[!htbp]
	\centering
	\includegraphics[width=\textwidth]{chrono_transform}
	\caption{chrono 转换示意图}
	\label{fig:chrono_transform}
\end{figure}
类对象包含有：
\begin{itemize}
	\item \href{https://www.cplusplus.com/reference/chrono/duration/}{duration}：记录指定时间单位下花了多少个单位时间，时间单位可以设置情况如\tabref{tab:Period}。
    \item \href{https://www.cplusplus.com/reference/chrono/duration_values/}{duration\_value}
    \item \href{https://www.cplusplus.com/reference/chrono/high_resolution_clock/}{high\_resolution\_clock}：系统最短的时钟周期。
    \item \href{https://www.cplusplus.com/reference/chrono/steady_clock/}{steady\_clock}：访问当前时间点的时钟类。
    \item \href{https://www.cplusplus.com/reference/chrono/system_clock/}{system\_clock}：系统时钟，成员常量 is\_ready。成员函数now获取当前时间点。to\_time\_t 转换时间点为时间戳（数值），from\_time\_t 从时间转换为时间点。
    \item \href{https://www.cplusplus.com/reference/chrono/time_point/}{time\_point}：表达时钟相对于时间周期的点。
    \item \href{https://www.cplusplus.com/reference/chrono/treat_as_floating_point/}{treat\_as\_floating\_point}：
\end{itemize}
duration函数签名如下：
\begin{cpp}
    template <class Rep, class Period = ratio<1> >
    class duration;
\end{cpp}
Rep是一个算法或者类算法类型用作 count 的返回类型。Period：用秒作为单位的 ratio 类型表示的时间。
\begin{table}[!ht]
    \caption{常见的时间表示}
    \centering
    \begin{tabular}{|l|l|l|}
        \hline
        type         & Representation                           & Period              \\ \hline
        hours        & signed integral type of at least 23 bits & ratio<3600,1>       \\ \hline
        minutes      & signed integral type of at least 29 bits & ratio<60,1>         \\ \hline
        seconds      & signed integral type of at least 35 bits & ratio<1,1>          \\ \hline
        milliseconds & signed integral type of at least 45 bits & ratio<1,1000>       \\ \hline
        microseconds & signed integral type of at least 55 bits & ratio<1,1000000>    \\ \hline
        nanoseconds  & signed integral type of at least 64 bits & ratio<1,1000000000> \\ \hline
    \end{tabular}
    \label{tab:Period}
\end{table}
成员函数：count获取时间发生数。静态成员函数：
\begin{itemize}
    \item zero：返回值为0的duration对象。
    \item min：流逝的最小时间
    \item max:流逝的最大时间
\end{itemize}
\cppfile{sample/chrono_duration_demo.cc}
duration\_value对象主要用来根据周期个数来统计时间跨度，成员函数 count 用来统计时间周期的个数，其中静态成员函数：
\begin{itemize}
	\item zero()：0值。
	\item min()：区间的最小值。
	\item max()：区间的最大值。
\end{itemize}
\begin{itemize}
    \item high\_resolution\_clock 系统的最短时钟周期。静态成员函数now返回一个时间点对象。
    \item steady\_clock：访问时间点的时间类。主要用来计算时间间隔。
          \cppfile{sample/chrono_steady_clock_demo.cc}
    \item system\_clock：返回时间点类。系统计时时钟。静态成员函数：
          \begin{itemize}
			  \item now()：获取当前时间
			  \item to\_time\_t()：转换为time\_t
			  \item from\_time\_t()：从time\_t 转换时间
          \end{itemize}
    \item time\_point：相对于一个时间过了多少个周期。内部通过 duration 和 clock 存储信息。成员
          \begin{itemize}
			  \item time\_since\_epoch()：获取时间戳。(成员函数)
			  \item min()：返回时间点的最小值（静态成员函数）
			  \item max()：返回时间点的最大值（静态成员函数）
          \end{itemize}
    \item treat\_as\_floating\_point
          \cppfile{sample/chrono_treat_as_floating_point_demo.cc}
\end{itemize}
函数：
\begin{itemize}
    \item \href{https://www.cplusplus.com/reference/chrono/duration_cast/}{duration\_cast}：转换时间为指定单位的数值。
          \cppfile{sample/chrono_duration_cast_demo.cc}
    \item \href{https://www.cplusplus.com/reference/chrono/time_point_cast/}{time\_point\_cast}：转换时间点对象的为不同的duration的时间点对象。
\end{itemize}
\section{\href{https://www.cplusplus.com/reference/limits/numeric_limits/}{std::limits}}
\begin{cpp}
template<> class numeric_limits<bool>;
template<> class numeric_limits<char>;
template<> class numeric_limits<signed char>;
template<> class numeric_limits<unsigned char>;
template<> class numeric_limits<wchar_t>;
template<> class numeric_limits<char8_t>;//(C++20 起)
template<> class numeric_limits<char16_t>;//(C++11 起)
template<> class numeric_limits<char32_t>;//(C++11 起)
template<> class numeric_limits<short>;
template<> class numeric_limits<unsigned short>;
template<> class numeric_limits<int>;
template<> class numeric_limits<unsigned int>;
template<> class numeric_limits<long>;
template<> class numeric_limits<unsigned long>;
template<> class numeric_limits<long long>;
template<> class numeric_limits<unsigned long long>;
template<> class numeric_limits<float>;
template<> class numeric_limits<double>;
template<> class numeric_limits<long double>;
\end{cpp}
\begin{itemize}
	\item is\_specialized[静态]：鉴别 std::numeric\_limits 是否为该类型特化(公开静态成员常量)
	\item is\_signed[静态]：鉴别有符号类型(公开静态成员常量)
	\item is\_integer[静态]：鉴别整数类型(公开静态成员常量)
	\item is\_exact[静态]：鉴别准确表示的类型(公开静态成员常量)
	\item has\_infinity[静态]:鉴别能表示特殊值“正无穷大”的浮点类型(公开静态成员常量)
	\item has\_quiet\_NaN[静态]：鉴别能表示特殊值“安静的非数”（ NaN ）的浮点类型(公开静态成员常量)
	\item has\_signaling\_NaN[静态]：鉴别能表示特殊值“发信的非数”（ NaN ）的浮点类型(公开静态成员常量)
	\item has\_denorm[静态]：鉴别浮点类型所用的非正规风格(公开静态成员常量)
	\item has\_denorm\_loss[静态]：鉴别浮点类型是否检测精度损失为非正规损失，而非不准确结果(公开静态成员常量)
	\item round\_style[静态]：鉴别类型所用的舍入模式(公开静态成员常量)
	\item is\_iec559[静态]：鉴别 IEC 559/IEEE 754 浮点类型(公开静态成员常量)
	\item is\_bounded[静态]：鉴别表示有限值集合的类型(公开静态成员常量)
	\item is\_modulo[静态]：鉴别以模算术处理溢出的类型(公开静态成员常量)
	\item digits[静态]：能无更改地表示的 radix 位数(公开静态成员常量)
	\item digits10[静态]：能无更改地表示的十进制位数(公开静态成员常量)
	\item max\_digits10[静态](C++11)：区别所有此类型值所需的十进制位数(公开静态成员常量)
	\item radix[静态]：给定类型的表示所用的基或整数底(公开静态成员常量)
	\item min\_exponent[静态]：底的该数次幂是合法正规浮点值的最小负数加一(公开静态成员常量)
	\item min\_exponent10[静态]：10 的该数次幂是合法正规浮点值的最小负数(公开静态成员常量)
	\item max\_exponent[静态]：底的该数次幂是合法有限浮点值的最大整数加一(公开静态成员常量)
	\item max\_exponent10[静态]：10 的该数次幂是合法有限浮点值的最大整数(公开静态成员常量)
	\item traps[静态]：鉴别可能导致算术运算出现陷阱的类型(公开静态成员常量)
	\item tinyness\_before[静态]：鉴别检测舍入前是否非正规的浮点类型(公开静态成员常量)
\end{itemize}
		成员函数
		\begin{itemize}
			\item min[静态]：返回给定类型的最小有限值(公开静态成员函数)
			\item lowest[静态](C++11)：返回给定类型的最低有限值(公开静态成员函数)
			\item max[静态]：返回给定类型的最大有限值(公开静态成员函数)
			\item epsilon[静态]：返回 1.0 与给定类型的下个可表示值的差(公开静态成员函数)
			\item round\_error[静态]：返回给定浮点类型的最大舍入误差(公开静态成员函数)
			\item infinity[静态]：返回给定类型的正无穷大值(公开静态成员函数)
			\item quiet\_NaN[静态]：返回给定浮点类型的安静 NaN 值(公开静态成员函数)
			\item signaling\_NaN[静态]：返回给定浮点类型的发信的 NaN(公开静态成员函数)
			\item denorm\_min[静态]：返回给定浮点类型的最小正非正规值(公开静态成员函数)
		\end{itemize}
				辅助类
				\begin{itemize}
					\item float\_round\_style：指示浮点舍入模式(枚举)
					\item float\_denorm\_style：指示浮点非规格化模式(枚举)
				\end{itemize}
常量：
\begin{table}[!htbp]
	\begin{tabular}{ccc}
		\toprule
		常量	&含义	&值\\
		\midrule
		CHAR\_BIT	&非bit域的最小变量的bit数&	8\\
		SCHAR\_MIN	&signed char 类型变量最小值.&	-128\\
		SCHAR\_MAX	&signed char型的最大变量.&	127\\
		UCHAR\_MAX	&unsigned char 类型的最大变量.&	255 (0xff)\\
		CHAR\_MIN	&char 类型变量的最小值&-128; 0 if /J option used\\
		CHAR\_MAX	&char 类型变量的最大值	&127; 255 if /J option used\\
		MB\_LEN\_MAX	&多字符常量的最大字节数&	5\\
		SHRT\_MIN	&short 类型变量的最小值&	-32768\\
		SHRT\_MAX	&short 类型变量的最大值&	32767\\
		USHRT\_MAX	&unsigned short 类型的最大变量.&	65535 (0xffff)\\
		INT\_MIN	&int 类型变量的最小值&	-2147483647 - 1\\
		INT\_MAX	&int 类型变量的最大值&	2147483647\\
		UINT\_MAX	&unsigned int 类型的最大变量.&	4294967295 (0xffffffff)\\
		LONG\_MIN	&long 类型变量的最小值&	-2147483647 - 1\\
		LONG\_MAX	&long 类型变量的最大值&	2147483647\\
		ULONG\_MAX	&unsigned long 类型的最大变量.&	4294967295 (0xffffffff)\\
		LLONG\_MIN	&long long 类型变量最小值.&	-9,223,372,036,854,775,807 - 1\\
		LLONG\_MAX	&long long 类型的最大变量.&	9,223,372,036,854,775,807\\
		ULLONG\_MAX	&unsigned unsigned long long 类型的最大变量 long.&18,446,744,073,709,551,615 (0xffffffffffffffff)\\
	\bottomrule
	\end{tabular}
\end{table}
\begin{itemize}
    \item \href{https://www.cplusplus.com/reference/limits/float_denorm_style/}{float\_denorm\_style}：枚举类型，用来控制浮点数数据的展示类型。
          \begin{table}[!htbp]
              \centering
              \begin{tabular}{ccc}
                  \toprule
                  标签                  & 数值 & 含义                             \\
                  \midrule
                  denorm\_indeterminate & -1   & 类型的规范化风格无法在编译期确定 \\
                  denorm\_absent        & 0    & 此类型无法被规范化               \\
                  denorm\_present       & 1    & 此类型可以被规范化               \\
                  \bottomrule
              \end{tabular}
          \end{table}
    \item \href{https://www.cplusplus.com/reference/limits/float_round_style/}{float\_round\_style}：浮点是可能的取整风格。
          \begin{table}[!htbp]
              \centering
              \begin{tabular}{ccc}
                  \toprule
                  标签                         & 数值 & 含义                     \\
                  \midrule
                  round\_indeterminate         & -2   & 取整风格无法在编译期确定 \\
                  round\_toward\_zero          & -1   & 向0取整                  \\
                  round\_to\_nearest           & 0    & 向最近的值取整           \\
                  round\_toward\_infinity      & 1    & 向正无穷取整             \\
                  round\_toward\_neg\_infinity & 2    & 向负无穷取整             \\
                  \bottomrule
              \end{tabular}
          \end{table}
\end{itemize}

